Résolu sur le forum : Borne Wallbox Pulsar Plus 7,4 kW sur abonnement 6 kVA : quel délestage avant accord copro (urgent)Ma panne diagnostiquée — réponse sous 48 h29 €

Processing – 3D : Plan inclinable 3D contrôlé avec le clavier.

Électroniquemis à jour le 22 avril 2023

Le Processing – 3D est une technologie qui permet aux utilisateurs de créer des modèles 3D et de les contrôler à l’aide d’un clavier. Cette technologie offre aux utilisateurs une variété de possibilités créatives et est très utile pour les artistes, les designers et les développeurs. Dans cet article, nous allons examiner en détail le plan inclinable 3D contrôlé avec le clavier, qui est l’un des principaux avantages de cette technologie. Nous verrons comment cette fonctionnalité peut être utilisée pour créer des modèles 3D plus complexes et plus réalistes.

Processing – 3D : Plan inclinable 3D contrôlé avec le clavier.

Explication

  • Ce programme explore les possibilité de base de la 3D avec Processing, notamment :
    • la rotation autour des axes X,Z de référence du tracé (instructions rotateX, rotateZ)
    • à distinguer de la rotation de la « caméra » ou angle de vue dans le plan XZ qui permet de se déplacer autour des axes de références (instruction camera)
  • Les 3 axes de référence de l’espace 3D sont dessinés : l’axe X en rouge, l’axe Y en vert et l’axe Z en bleu.
  • Dans ce programme :
    • les touches 8 (HAUT) et 2 (BAS) du pavé numérique modifient l’angle de la caméra dans le plan XZ
    • les touches de flèches DROIT et GAUCHE modifient l’inclinaison autour de l’axe Z
    • les touches de flèches HAUT et BAS modifient l’inclinaison autour de l’axe X

Ressources utiles

  • La référence des instructions
    • rotateX, rotateZ
    • camera
    • size
    • translate

Le programme

// Programme processing
// généré avec le générateur de code Processing
// www.mon-club-elec.fr
// par X. HINAULT – Avril 2011 – tous droits réservés

/////////////// Description du programme ////////////
// Utilise le clavier

// XXXXXXXXXXXXXXXXXXXXXX ENTETE DECLARATIVE XXXXXXXXXXXXXXXXXXXXXX

// inclusion des librairies utilisées

// déclaration objets

// déclaration variables globales

//—— déclaration des variables de couleur utiles —-
int jaune=color(255,255,0);
int vert=color(0,255,0);
int rouge=color(255,0,0);
int bleu=color(0,0,255);
int noir=color(0,0,0);
int blanc=color(255,255,255);
int bleuclair=color(0,255,255);
int violet=color(255,0,255);

//———- angles pour 3D —-
int angleX=0; // angle X pour tracé de forme
int angleY=0; // angle Y pour tracé de forme
int angleZ=0; // angle Z pour tracé de forme

int distanceCamXZ=400; // variable distance à la caméra dans plan XZ
int distanceCamYZ=0; // variable distance à la caméra dans plan YZ

int angleCamXZ=90; // angle dans le plan XZ de la visée de la caméra avec l’axe des X dans le plan XZ
int angleCamYZ=90; // angle avec axe YZ de la visée de la caméra dans le plan YZ

// XXXXXXXXXXXXXXXXXXXXXX  Fonction SETUP XXXXXXXXXXXXXXXXXXXXXX

void setup(){ // fonction d’initialisation exécutée 1 fois au démarrage

        // —- initialisation paramètres graphiques utilisés
        colorMode(RGB, 255,255,255); // fixe format couleur R G B pour fill, stroke, etc…
        fill(0,0,255); // couleur remplissage RGB – noFill() si pas de remplissage
        stroke (0,0,0); // couleur pourtour RGB – noStroke() si pas de pourtour
        rectMode(CORNER); // origine rectangle : CORNER = coin sup gauche | CENTER : centre
        imageMode(CORNER); // origine image : CORNER = coin sup gauche | CENTER : centre
        ellipseMode(CENTER); // origine cercles / ellipses : CENTER : centre (autres : RADIUS, CORNERS, CORNER
        //strokeWeight(0); // largeur pourtour
        frameRate(30);// Images par seconde

        // — initialisation fenêtre de base —
        size(400, 400,P3D); // ouvre une fenêtre xpixels  x ypixels
        background(0,0,0); // couleur fond fenetre

ClavierUtiliser clavier virtuel sous Ubuntu

// — initialisation des objets et fonctionnalités utilisées —

} // fin fonction Setup

// XXXXXXXXXXXXXXXXXXXXXX Fonction Draw XXXXXXXXXXXXXXXXXXXX

void  draw() { // fonction exécutée en boucle

        // NB : à chaque draw, la position est réinitialisée en 0,0 de la fenêtre d’affichage

        background(noir); // couleur fond fenetre

        translate (width/2, height/2, 0 ); // décale origine dessin
        //angleX=angleX+3; // incrémente angle

        //camera(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ)
        //angleCamXZ=90; // angle entre axe visée caméra et axe X
        camera ( distanceCamXZ*cos(radians(angleCamXZ)),0, distanceCamXZ*sin(radians(angleCamXZ)), 0, 0, 0,0,1,0); // angle de vue de la scène 3D

        rotateX(radians(angleX)); // rotation de angleX ° autour de l’axe des X (horizontal) par rapport référence dessin
        rotateY(radians(0)); // rotation autour de l’axe des y (vertical) par rapport référence dessin
        rotateZ(radians(angleZ)); // rotation autour de l’axe des z (avant-arriere) par rapport référence dessin

        stroke(jaune);
        // box(width, height, depth);
        box(200, 5, 200);

        // while(true); // stoppe boucle draw

        // affiche le repère Ox,Oy,Oz

        //—- Ox
        stroke(rouge);
        line (0,0,0,150,0,0);

        // — Oy
        stroke(vert);
        line (0,0,0,0,-150,0);

        // — Oz
        stroke(bleu);
        line (0,0,0,0,0,-150);

} // fin de la fonction draw()

// XXXXXXXXXXXXXXXXXXXXXX Autres Fonctions XXXXXXXXXXXXXXXXXXXXXX

//———— gestion évènement clavier ———

void keyPressed() { // si une touche est appuyée

        // les touches 8 (HAUT) et 2 (BAS) du pavé numérique modifient l’angle de la caméra dans le plan XZ

        if(key==‘8’) { // si touche a enfoncee

             angleCamXZ=angleCamXZ+5; // angle entre axe visée caméra et axe X dans le plan XZ
        }

        if(key==‘2’) { // si touche a enfoncee

             angleCamXZ=angleCamXZ5; // angle entre axe visée caméra et axe X dans le plan XZ
        }

        // les touches de flèches DROIT et GAUCHE modifient l’inclinaison autour de l’axe Z
        // les touches de flèches HAUT et BAS modifient l’inclinaison autour de l’axe X

AvecPrincipes d’utilisation des alimentations avec une carte Arduino et des servomoteurs

        if (key == CODED) { // si appui d’une touche particulière (les touches spéciales up, down, etc.. cf Keycode)

                if (keyCode == UP) { // si touche Haut appuyée
                    angleX=angleX+5;
                }
                else if (keyCode == DOWN) {// si touche BAS appuyée
                 angleX=angleX5;
                }

                else if (keyCode == LEFT) {// si touche GAUCHE appuyée

                 angleZ=angleZ+5;

                }
                else if (keyCode == RIGHT) {// si touche GAUCHE appuyée

                 angleZ=angleZ5;

                }

                else if (keyCode==SHIFT) {// si touche GAUCHE appuyée

                }

        } //— fin si appui touche spéciale —

} //— fin si touche enfoncee

//XXXXXXXXXXXXXXXXXX Fin du programme XXXXXXXXXXXXXXXXX

 

Voir ici :

Donnez votre avis

Soyez le 1er à noter cet article
ou bien laissez un avis détaillé


Partagez cet article maintenant !


Ça ne règle pas votre cas ?

Décrivez la panne sur le forum, avec une photo si vous pouvez : les membres qui ont eu la même répondent, et le sujet reste pour les suivants.

Avatar photoAvatar photoAvatar photoAvatar photoAvatar photoRejoindre les 54 membres — gratuit, 44 pannes résolues

Dans le même tiroir

Réagissez à cet article

La lettre du club

Une lettre par mois, accrochée au panneau

Les sujets du forum résolus dans le mois, un guide, un chiffre qu’on peut vérifier chez soi. Rien d’autre, jamais plus souvent — et on se désabonne d’un clic.

Ce qu’il y a dedans

Votre adresse

Une lettre par mois. Désabonnement en un clic.

Partagez votre réaction